/**  逻辑运算符
 *      & 与,&& ,|或, || ,!非 ，
 *    逻辑运算符结果都是boolean型，也就是要么是true，要么是false
 * @author wzby
 */
public class Types6 {

    public static void main(String[] args) {
        String name = "张北";
        int age = 21;
        System.out.println(name.startsWith("王"));
        System.out.println(age > 21);
        System.out.println(age > 20);
        System.out.println(name.startsWith("王") && age < 22);
        System.out.println("***".repeat(30));
        int i = 0;
        System.out.println(i == 1 && ++i == 2);
        //有短路，&&后面的没有执行
        System.out.println(i);
        int a = 0;
        System.out.println(a == 1 & ++a == 2);
        //没有短路，&后面的命令执行了 a=++a=1
        System.out.println(a);
        System.out.println("***".repeat(30));
        // &&与，有一个假就是false，&&有短路机制，&没有短路机制
        System.out.println(name.startsWith("王") || age < 22);
        int s = 0;
        System.out.println(s == 0 || ++s == 2);
        //前面为真，然后短路，后面的命令就不执行
        System.out.println(s);
        int c = 0;
        System.out.println(c == 0 | ++c ==2);
        //没有短路，|后面的命令执行了 c=++c=1
        System.out.println(c);
        // ||或，有一个真就是true，||有短路机制，|没有短路机制
        System.out.println("==".repeat(25));
        System.out.println(!!!true);
        //非 !，取反（建议尽量不使用取反逻辑）
    }

}
